package com.wiscamp.ninechapters.problems.domain.repositories;

import com.wiscamp.ninechapters.problems.domain.models.types.ProblemType;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;

import java.util.Collection;

public interface ProblemTypeRepository {

    ProblemType getProblemType(long typeId);

    ProblemType getProblemTypeByCode(@NotBlank String typeCode);

    Collection<ProblemType> getProblemTypesByIds(@NotEmpty Collection<Long> ids);

    Collection<ProblemType> getProblemTypesByName(@NotBlank String typeName);

    Collection<ProblemType> getAvailableProblemTypes();

    ProblemType saveProblemType(@NotNull ProblemType problemType);

    boolean bindQuestionType(long problemTypeId, long questionTypeId);

    boolean unbindQuestionType(long problemTypeId, long questionTypeId);

    //Collection<QuestionType> getQuestionTypesByProblemType(@Min(0) long problemTypeId);
}
